package cc.cix.gt.org.service;

import cc.cix.gt.common.entity.ResultPage;
import cc.cix.gt.common.entity.Tree;
import cc.cix.gt.org.dto.query.QueryMenuReq;
import cc.cix.gt.org.entity.Menu;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author cix
 */
public interface IMenuService extends IService<Menu> {

    /**
     * 获取用户权限
     *
     * @return 用户权限码列表
     */
    List<String> listUserPermission();

    /**
     * 获取用户菜单
     *
     * @param username 用户名
     * @return 用户菜单
     */
    List<Menu> listUserMenu(String username);

    /**
     * 获取用户菜单
     *
     * @param dto 查询对象
     * @return 用户菜单
     */
    ResultPage<Tree<Menu>> listMenu(QueryMenuReq dto);

    /**
     * 创建菜单
     *
     * @param menu menu
     */
    void createMenu(Menu menu);

    /**
     * 更新菜单
     *
     * @param menu menu
     */
    void updateMenu(Menu menu);

    /**
     * 递归删除菜单/按钮
     *
     * @param menuIds menuIds
     */
    void deleteMenuByIds(List<String> menuIds);

    /**
     * 根据用户 ID 获取菜单 ID 列表
     *
     * @param userId 用户 ID
     * @return 角色 ID 列表
     */
    List<Long> listMenuIdByUserId(Long userId);

}
